/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.common.electricsent.service;

import com.icinfo.cloud.provider.punish.common.electricsent.SentReceiptDocQueryDto;
import com.icinfo.cloud.provider.punish.common.electricsent.dto.*;
import com.icinfo.cloud.provider.punish.common.electricsent.vo.CaseDocumentSendinfoConfirmVo;
import com.icinfo.cloud.provider.punish.common.electricsent.vo.DocumentSendRecordByPartiesVo;
import com.icinfo.cloud.provider.punish.common.electricsent.vo.DocumentSentFlowDetailInfoVo;
import com.icinfo.cloud.provider.punish.common.electricsent.vo.DocumentSentRegisterVo;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * 描述：文书送达流程接口（app业务）
 *
 * @author xiangyuyu
 * @date 2022-02-18 14:48
 */
public interface IAppDocumentSentFlowService extends BaseService {

    /**
     * 【V1.0.0】描述：获取送达流程详情数据
     *
     * @param queryDto {@link DocumentSentFlowDetailInfoQueryDto}
     * @return {@link DocumentSentFlowDetailInfoVo} 送达流程详情数据
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    DocumentSentFlowDetailInfoVo getDocumentSentFlowDetailInfo(DocumentSentFlowDetailInfoQueryDto queryDto);


    /**
     * 【V2.0.0】描述：获取电子送达页面送达人初始化信息
     *
     * @param request {@link DocumentSentAddressInfoRequest}
     * @return {@link Result<CaseDocumentSendinfoConfirmVo>} 电子送达页面送达人初始化信息
     * @author xiangyuyu
     * @date 2022-02-28 15:58
     */
    CaseDocumentSendinfoConfirmVo getReceiverInitInfo(DocumentSentAddressInfoRequest request);

    /**
     * 【V1.1.0】描述：获取送达回证文书地址
     *
     * @param queryDto {@link SentReceiptDocQueryDto}
     * @return String 送达回证文书地址
     * @author xiangyuyu
     * @date 2022-04-20 14:40
     */
    String getSentReceiptDocUrl(SentReceiptDocQueryDto queryDto);

    /**
     * 【V1.1.0】描述：现场送达状态标记
     *
     * @param saveDto {@link RealPlaceSentInfoSaveDto}
     * @return Map<String,Object> 操作结果
     * @author xiangyuyu
     * @date 2022-04-24 16:08
     */
    Map<String,Object> signRealPlaceSentInfo(RealPlaceSentInfoSaveDto saveDto);

    /**
     * 【V1.0.0】描述：保存文书送达登记
     *
     * @param saveDto {@link DocumentSentRegisterSaveDto}
     * @return {@link Result <String>} 保存结果
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    Result<String> saveDocumentSentRegister(DocumentSentRegisterSaveDto saveDto);


    /**
     * 【V2.0.0】描述：查询文书送达登记信息
     *
     * @param request {@link DocumentSentRegisterInfoRequest}
     * @return {@link Result<DocumentSentRegisterVo>} 文书送达登记信息
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    DocumentSentRegisterVo getDocumentSentRegisterInfo(DocumentSentRegisterInfoRequest request);

    /**
     * 【V1.0.0】描述：根据唯一标识查询文书送达登记表单信息（适配了移动端留置送达、现场送达表单信息）
     *
     * @param id 唯一标识
     * @return {@link DocumentSentRegisterVo} 文书送达登记
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    DocumentSentRegisterVo getDocumentSentRegister(String id);

    /**
     * 查询多当事人文书送达记录
     *
     * @author: zhengqiang
     * @date: 2022/5/17
     * @param: documentSendRecordByPartiesQueryDto
     * @return {@link List< DocumentSendRecordByPartiesVo>}
     **/
    List<DocumentSendRecordByPartiesVo> getDocumentSendRecordByParties(DocumentSendRecordByPartiesQueryDto documentSendRecordByPartiesQueryDto);



    /**
     * 根据案件类型校验文书是否都已送达
     *
     * @author: zhengqiang
     * @date: 2022/5/17
     * @param: caseId
     * @param: documentId
     * @return {@link boolean}
     **/
    boolean checkDocumentIsAllSend(String caseId, String documentId);
    /**
     * 描述：生成电子送达对应送达回证信息
     *
     * @param dto {@link ConfirmSendSaveDto}
     * @return String 错误信息
     * @author xiangyuyu
     * @date 2022-06-20 20:13
     */
   String generateElectricSentReceipt(ConfirmSendSaveDto dto);
}